package com.day15;

import org.junit.Test;

import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;

public class TreeSetTest {

    /**
     * 1.向TreeSet中添加的数据，要求是相同类的对象
     * 2.两种排序方式:自然排序 和 定制排序
     *
     * 3.自然排序中，比较两个对象是否相同的标准为: compareTo()返 回0,不再是equals()方法。
     *
     * 4.定制排序中,比较两个对象是否相同的标准为: compare()返回0，不再是equals().
     *
     * @param args
     */
    public static void main(String[] args) {
        TreeSet treeSet = new TreeSet();

        //不能添加不同类型的元素
//        treeSet.add(123);
//        treeSet.add(456);
//        treeSet.add("AA");
//        treeSet.add("BB");

        //举例二:
        treeSet.add(new User("Tom", 12));
        treeSet.add(new User("Jerry", 32));
        treeSet.add(new User("Jim", 2));

        Iterator iterator = treeSet.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }

    @Test
    public void test2() {

        Comparator comparator = new Comparator() {
            //按照年龄从小到大排列
            @Override
            public int compare(Object o1, Object o2) {
                if (o1 instanceof User && o2 instanceof User) {
                    User user1 = (User) o1;
                    User user2 = (User) o2;
                    return Integer.compare(user1.getAge(), user2.getAge());
                } else {
                    throw new RuntimeException("输出的类型数据不匹配");
                }
            }
        };

        TreeSet treeSet = new TreeSet(comparator);

        treeSet.add(new User("Tom", 12));
        treeSet.add(new User("Jerry", 32));
        treeSet.add(new User("Jim", 2));

        Iterator iterator = treeSet.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }


    }
}
